Plotly Express Gallery

Plotly Express is a terse, consistent, high-level wrapper around Plotly.py for rapid data exploration and figure generation.

This notebook demonstrates various plotly_express features. Reference documentation and a step by step walkthrough notebook are also available.

You can also read our Medium announcement article for more information on this library.

A single import

In [1]:
import plotly_express as px

Built-in sample datasets

In [2]:
print(px.data.iris.__doc__)
iris = px.data.iris()
    Each row represents a flower.

    https://en.wikipedia.org/wiki/Iris_flower_data_set

    Returns:
        A `pandas.DataFrame` with 150 rows and the following columns: `['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species',
       'species_id']`.
    
In [3]:
tips = px.data.tips()
gapminder = px.data.gapminder()
election = px.data.election()
wind = px.data.wind()
carshare = px.data.carshare()

Scatter and Line plots

In [4]:
px.scatter(iris, x="sepal_width", y="sepal_length")
In [5]:
px.scatter(iris, x="sepal_width", y="sepal_length", color="species")
In [6]:
px.scatter(iris, x="sepal_width", y="sepal_length", color="species", marginal_y="rug", marginal_x="histogram")
In [7]:
px.scatter(iris, x="sepal_width", y="sepal_length", color="species", marginal_y="violin",
           marginal_x="box", trendline="ols")
In [8]:
iris["e"] = iris["sepal_width"]/100
px.scatter(iris, x="sepal_width", y="sepal_length", color="species", error_x="e", error_y="e")
In [9]:
del iris["e"]
In [10]:
px.scatter(tips, x="total_bill", y="tip", facet_row="time", facet_col="day", color="smoker", trendline="ols",
          category_orders={"day": ["Thur", "Fri", "Sat", "Sun"], "time": ["Lunch", "Dinner"]})
In [11]:
px.scatter_matrix(iris)
In [12]:
px.scatter_matrix(iris, dimensions=["sepal_width", "sepal_length", "petal_width", "petal_length"], color="species")
In [13]:
px.parallel_coordinates(iris, color="species_id", labels={"species_id": "Species",
                  "sepal_width": "Sepal Width", "sepal_length": "Sepal Length",
                  "petal_width": "Petal Width", "petal_length": "Petal Length", },
                    color_continuous_scale=px.colors.diverging.Tealrose, color_continuous_midpoint=2)
In [14]:
px.parallel_categories(tips, color="size", color_continuous_scale=px.colors.sequential.Inferno)
In [15]:
px.scatter(tips, x="total_bill", y="tip", color="size", facet_col="sex",
           color_continuous_scale=px.colors.sequential.Viridis, render_mode="webgl")
In [16]:
px.scatter(gapminder.query("year==2007"), x="gdpPercap", y="lifeExp", size="pop", color="continent",
           hover_name="country", log_x=True, size_max=60)
In [17]:
px.scatter(gapminder, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
           size="pop", color="continent", hover_name="country", facet_col="continent",
           log_x=True, size_max=45, range_x=[100,100000], range_y=[25,90])
In [18]:
px.line(gapminder, x="year", y="lifeExp", color="continent", line_group="country", hover_name="country",
        line_shape="spline")
In [19]:
px.area(gapminder, x="year", y="pop", color="continent", line_group="country")

Visualize Distributions

In [20]:
px.density_contour(iris, x="sepal_width", y="sepal_length")
In [21]:
px.density_contour(iris, x="sepal_width", y="sepal_length", color="species", marginal_x="rug", marginal_y="histogram")
In [22]:
px.bar(tips, x="sex", y="total_bill", color="smoker", barmode="group")
In [23]:
px.bar(tips, x="sex", y="total_bill", color="smoker", barmode="group", facet_row="time", facet_col="day",
       category_orders={"day": ["Thur", "Fri", "Sat", "Sun"], "time": ["Lunch", "Dinner"]})
In [24]:
px.histogram(tips, x="total_bill", y="tip", color="sex", marginal="rug", hover_data=tips.columns)
In [25]:
px.histogram(tips, x="sex", y="tip", histfunc="avg", color="smoker", barmode="group",
             facet_row="time", facet_col="day", category_orders={"day": ["Thur", "Fri", "Sat", "Sun"],
                                                                "time": ["Lunch", "Dinner"]})
In [26]:
px.box(tips, x="day", y="total_bill", color="smoker", notched=True)
In [27]:
px.violin(tips, y="tip", x="smoker", color="sex", box=True, points="all", hover_data=tips.columns)

Ternary Coordinates

In [28]:
px.scatter_ternary(election, a="Joly", b="Coderre", c="Bergeron", color="winner", size="total", hover_name="district",
                   size_max=15, color_discrete_map = {"Joly": "blue", "Bergeron": "green", "Coderre":"red"} )
In [29]:
px.line_ternary(election, a="Joly", b="Coderre", c="Bergeron", color="winner", line_dash="winner")

3D Coordinates

In [30]:
px.scatter_3d(election, x="Joly", y="Coderre", z="Bergeron", color="winner", size="total", hover_name="district",
                  symbol="result", color_discrete_map = {"Joly": "blue", "Bergeron": "green", "Coderre":"red"})
In [31]:
px.line_3d(election, x="Joly", y="Coderre", z="Bergeron", color="winner", line_dash="winner")

Polar Coordinates

In [32]:
px.scatter_polar(wind, r="value", theta="direction", color="strength", symbol="strength",
            color_discrete_sequence=px.colors.sequential.Plotly[-2::-1])
In [33]:
px.line_polar(wind, r="value", theta="direction", color="strength", line_close=True,
            color_discrete_sequence=px.colors.sequential.Plotly[-2::-1])
In [34]:
px.bar_polar(wind, r="value", theta="direction", color="strength", template="plotly_dark",
            color_discrete_sequence= px.colors.sequential.Plotly[-2::-1])

Maps

In [35]:
px.set_mapbox_access_token(open(".mapbox_token").read())
px.scatter_mapbox(carshare, lat="centroid_lat", lon="centroid_lon", color="peak_hour", size="car_hours",
                  color_continuous_scale=px.colors.cyclical.IceFire, size_max=15, zoom=10)
In [36]:
px.set_mapbox_access_token(open(".mapbox_token").read())
px.line_mapbox(carshare, lat="centroid_lat", lon="centroid_lon", color="peak_hour")
In [37]:
px.scatter_geo(gapminder, locations="iso_alpha", color="continent", hover_name="country", size="pop",
               animation_frame="year", projection="natural earth")
In [38]:
px.line_geo(gapminder.query("year==2007"), locations="iso_alpha", color="continent", projection="orthographic")
In [39]:
px.choropleth(gapminder, locations="iso_alpha", color="lifeExp", hover_name="country", animation_frame="year",
             color_continuous_scale=px.colors.sequential.Plasma)

Built-in Color Scales and Sequences (and a way to see them!)

In [40]:
px.colors.qualitative.swatches()
In [41]:
px.colors.sequential.swatches()
In [42]:
px.colors.diverging.swatches()
In [43]:
px.colors.cyclical.swatches()
In [44]:
px.colors.colorbrewer.swatches()
In [45]:
px.colors.cmocean.swatches()
In [46]:
px.colors.carto.swatches()

Next steps

Phew, you've made it this far! If you want to use Plotly Express yourself, just pip install plotly_express to install it and head on over to our reference documentation or just copy-paste from the examples above!